package com.huluobo.a2307douyindemo.demo.touch

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import android.view.MotionEvent
import com.huluobo.a2307douyindemo.R

/**
 * 触摸事件: 包含一个down(按下) 一个up(抬起) 和0或者无数个move(移动) ,一般cancel触发不到的
 * 事件分发机制:
 * 1.activity接受到事件(event) 分发-> Layout 分发 -> Layout 拦截 -> View 分发->View 消费 -> Layout 消费 ->Activity消费
 * 2. 事件->苹果 分发 -> true(下发) false(不发)  拦截->(true)掉头返回,(false) 顺利通过  消费-> 消耗掉事件 true消耗,false 代表不消耗
 * 3. 爷爷(Activity) 父亲(Layout) 儿子(View) 事件由爷爷发起 向下选择下发(发或者不发) -> 父亲权利多一项(拦截->可以让儿子知不知道有苹果这件事儿)
 * -> 儿子 是否消耗掉事件(消费) -> 把苹果返还给父亲(吃或者不吃)-> 把苹果返还为爷爷 (选择吃或者不吃都没有意义,事件已经到此为止)
 */

class TouchActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_touch)
    }

    //分发
    override fun dispatchTouchEvent(ev: MotionEvent?): Boolean {
        Log.e("TagA", "activity分发:${ev?.action}")
        return super.dispatchTouchEvent(ev)
    }

    //消费
    override fun onTouchEvent(event: MotionEvent?): Boolean {
        Log.e("TagA", "activity消费: ${event?.action}")
        return super.onTouchEvent(event)
    }
}